#include <bits/stdc++.h>
using namespace std;

//ceil返回向上取整
// int main()
// {
//     double a;
//     char ch;
//     cin>>a>>ch;
//     int money=0;
//     if(a<=1)money+=20;
//     else
//     {
//         money+=20;
//         a--;
//         if(a-(int)a>=1)money+=(int)a+1;
//         else money+=1;
//     }
//     if(ch=='y')money+=5;
//     cout<<money<<endl;
//     return 0;    
// }

// 动态规划
// 	1.状态表示
// 		dp[i]表示：到达i位置时的最小花费
// 	2.状态转移方程
//      
// int main() {
//     int n;
//     cin >> n;
//     int cost[n];
//     for (int i = 0; i < n; i++)cin >> cost[i];
//     int dp[n]={0};    
//     for (int i = 2; i <= n; i++) 
//     {
//         dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);   
//     }
//     cout << dp[n];
//     return 0;
// }


int main()
{
    string s1,s2;
    int m,prev1=-1,prev2=-1,ret=INT_MAX;
    cin>>m;
    cin>>s1>>s2;
    vector<string> str(m);
    for(int i=0;i<m;i++)cin>>str[i];
    for(int i=0;i<str.size();i++)
    {
        if(s1==str[i])
        {
            prev1=i;
            if(prev2!=-1)ret=min(ret,abs(prev2-prev1));
        }
        else if(s2==str[i])
        {
            prev2=i;
            if(prev1!=-1)ret=min(ret,abs(prev2-prev1));
        }
    } 
    if(prev1==-1||prev2==-1)cout<<-1<<endl;
    else cout<<ret<<endl;
    return 0;
}